package com.zzgele.qmzb.api.utils;

import com.zzgele.qmzb.api.core.Constants;

import java.util.Collection;
import java.util.Iterator;

/**
 * 生成4位随机整数
 * 
 * @author King
 * 
 */
public class StringUtil {
	/**
	 * 判断字符串变量是否空或Null
	 * @param s
	 * @return
	 */
	public static boolean isEmpty(String s) {
		return (s == null) || (s.trim().length() == 0);
	}

	/**
	 * 判断字符串变量是否不为空或不为Null
	 * @param s
	 * @return
	 */
	public static boolean isNotEmpty(String s) {
		return !isEmpty(s);
	}

	/**
	 * 生成4位随机数字
	 * @return
	 */
	public static String getRandomFour() {
		int random =  (int) (Math.random() * (9999 - 999) + 999);
		return String.valueOf(random);
	}

	/**
	 * 手机号码格式化微130****5678
	 *
	 * @param mobile
	 * @return
	 */
	public static String getMobileFormat(String mobile) {
		String reStr = mobile.substring(mobile.length() - 3, mobile.length());
		String preStr = mobile.substring(0, mobile.length() - 8);
		StringBuilder sb = new StringBuilder();
		sb.append(preStr).append("****").append(reStr);
		return sb.toString();
	}

	/**
	 * 银行账号格式化
	 *
	 * @param str
	 * @return
	 */
	public static String getBankSuffixFormat(String str) {
		String reStr = str.substring(str.length() - 4, str.length());
		return "尾号" + reStr;
	}

    /**
     * 生成登录token
     * @return
     */
    public static String getLoginToken(){
    	if (Constants.IS_DEBUG) {
    		return Constants.LOGIN_TOKEN_DEF;
		}
        return EncryptUtil.getCode(UUIDUtil.getUUID(), DateUtil.getCurUnixTimeStamp());
    }

	/**
	 * 获取文件名
	 * @return
	 */
    public static  String getFielName(){
		return UUIDUtil.getUUID() + "_" + getRandomFour();
	}

	/**
	 * 安全转换int
	 * @param str
	 * @return 如果失败，则返回0
	 */
	public static int getInt(String str) {
		return getInt(str, 0);
	}

	/**
	 * 安全转换int
	 * @param str 字符串
	 * @param default_value 转换失败的默认值
	 * @return
	 */
	public static int getInt(String str, int default_value) {
		try{
			return Integer.parseInt(str);
		}catch(NumberFormatException e){
			//System.out.println("异常：\"" + str + "\"不是数字/整数...");
			return default_value;
		}
	}

	/**
	 * 安全转换long
	 * @param str
	 * @return 如果失败，则返回0
	 */
	public static Long getLong(String str) {
		return getLong(str, 0L);
	}

	/**
	 * 安全转换long
	 * @param str 字符串
	 * @param default_value 转换失败的默认值
	 * @return
	 */
	public static Long getLong(String str, Long default_value) {
		try{
			return Long.parseLong(str);
		}catch(NumberFormatException e){
			//System.out.println("异常：\"" + str + "\"不是数字/整数...");
			return default_value;
		}
	}

	/**
	 * 把数组转换为字符串【用拆分符拼接】
	 * @param collection 集合
	 * @param separator 拆分符
	 * @return
	 */
	public static String implode(Collection collection, String separator) {
		StringBuilder sb = new StringBuilder();
		Iterator it = collection.iterator();
		while(it.hasNext()) {
			sb.append(it.next().toString());
			if(it.hasNext()) {
				sb.append(separator);
			}
		}
		return sb.toString();
	}

}
